package com.xique.door.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xique.door.bean.domain.CardDevice;
import com.xique.door.bean.domain.DCard;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 卡片Mapper接口
 * 
 * @author ww
 * @date 2021-09-14
 */
@Repository
public interface DCardMapper  extends BaseMapper<DCard>
{
    /**
     * 查询卡片
     * 
     * @param id 卡片ID
     * @return 卡片
     */
    public DCard selectDCardById(Long id);

    /**
     * 查询卡片列表
     * 
     * @param dCard 卡片
     * @return 卡片集合
     */
    public List<DCard> selectDCardList(DCard dCard);

    /**
     * 新增卡片
     * 
     * @param dCard 卡片
     * @return 结果
     */
    public int insertDCard(DCard dCard);

    /**
     * 修改卡片
     * 
     * @param dCard 卡片
     * @return 结果
     */
    public int updateDCard(DCard dCard);

    /**
     * 解绑卡片与用户房屋的关系
     *
     * @param cardId 卡片id
     * @return 结果
     */
    public int updateUserHouse(Long cardId);
    /**
     * 删除卡片
     * 
     * @param id 卡片ID
     * @return 结果
     */
    public int deleteDCardById(Long id);

    /**
     * 通过用户id删除卡片
     * @param userId
     * @return
     */
    int deleteDCardByUserId(Long userId);

    /**
     * 批量删除卡片
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteDCardByIds(String[] ids);

    /**
     * 批量插入卡片
     * @param dCardList
     * @return
     */
    int batchInsetDCard(List<DCard> dCardList);

    /**
     * 查询卡片信息
     * @param cardIds
     * @param status
     * @return
     */
    List<DCard> selectDCardByIds(@Param("cardIds") List<Long> cardIds, @Param("status") Integer status);

    /**
     * 查询用户卡片信息
     * @param userIds
     * @param status
     * @return
     */
    List<DCard> selectDCardByUserIds(@Param("userIds") List<Long> userIds, @Param("status") Integer status);

    /**
     * 查询卡片信息
     * @param cardSns
     * @param status
     * @return
     */
    List<DCard> selectDCardByCardSns(@Param("cardSns") List<String> cardSns, @Param("status") Integer status);

    /**
     * 查询卡片信息（精确查询）
     * @param dCard
     * @return
     */
    List<DCard> selectCardList(DCard dCard);
    /**
     * 查询卡片信息（精确查询）
     * @param dCard
     * @return
     */
    List<DCard> selectConditionCardList(DCard dCard);

    int deleteDCardByIdList(List<Long> ids);

    /**
     * @param id
     * @description: 根据设备id查询设备和卡片相关数据
     * @author taojc
     * @date: 2022/8/29
     */
    List<CardDevice> selectDCardDeviceList(Long id);

    /**
     * @param id
     * @description: 根据设备id删除设备和卡片相关表数据
     * @author taojc
     * @date: 2022/8/29
     */
    int deleteDCardDeviceId(@Param("id") Long id);

}
